package java_thinking.unit_20._20_1;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Desc:   20.1.2 注解案例
 *      1.我们可以用它来跟踪一个项目中的用力，如果一个方法或者一组方法实现了某个用例的需求，那么程序员可以为此方法
 *        加上该注解，于是，项目经理通过计算已经实现的用例，就可以很好的掌握项目的 进展，如果需要更新或者维护系统的
 *        业务逻辑，则维护人员也可以很快的找到该用例
 *
 *      2.元素：id、description
 *        要求：不能有不确定的值，必须要有默认值，要么在注释时提供元素的值，这里id没有默认值，所以在使用时id必填，而且不能为null
 *
 * @author: cww
 * @DateTime: 2019-05-26 17:45
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UseCase {
    public int id();
    public String description() default "no description";
}

/**
 *  20.2.2 自定义一些特殊的值，来表示某个元素不存在，下面这个用法算是一个习惯用法
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@interface SimulationNull {
    public int id() default -1;
    public String description() default "";
}

